package com.kaifamiao.operators;

// 交换两个变量的值
public class Rabbit {
    public static void main(String[] args) {
        int a = 100;
        int b = 200;
        System.out.println( "a = " + a + " , b = " + b );
        int t = b;
        b = a;
        a = t;
        System.out.println( "a = " + a + " , b = " + b );

        System.out.println( "用按位异或来交换两个变量的值");

        int x = 0b0000_0000_0000_0000_0000_0000_0000_0111;
        int y = 0b0000_0000_0000_0000_0000_0000_0000_0101;
        System.out.println( "x = " + x + " , y = " + y );
        // x: 0b0000_0000_0000_0000_0000_0000_0000_0111
        // y: 0b0000_0000_0000_0000_0000_0000_0000_0101
        //    0b0000_0000_0000_0000_0000_0000_0000_0010 (x)
        x ^= y; // x = x ^ y

        // x: 0b0000_0000_0000_0000_0000_0000_0000_0010
        // y: 0b0000_0000_0000_0000_0000_0000_0000_0101
        //    0b0000_0000_0000_0000_0000_0000_0000_0111 (y)
        y ^= x; // y = y ^ x

        // x: 0b0000_0000_0000_0000_0000_0000_0000_0010
        // y: 0b0000_0000_0000_0000_0000_0000_0000_0111
        //    0b0000_0000_0000_0000_0000_0000_0000_0101 (x)
        x ^= y; // x = x ^ y
        System.out.println( "x = " + x + " , y = " + y );
    }
}
